In many computing systems, low-level instruction code, or firmware, is used as an intermediary between the hardware components of the computing system and high-level software executing on the computing system, such as an operating system. The firmware provides a set of software routines that allow high-level software to interact with the hardware components of the computing system using standard calls. In some computer systems, this low-level instruction code is a Basic Input/Output System (“BIOS”). In other systems, the low-level instruction code is an Extensible Firmware Interface (“EFI”)—compatible firmware. EFI firmware may also be configured according to a specification released by the Unified EFI (“UEFI”) forum (the “UEFI Specification”). Such a firmware is referred to herein as a UEFI compliant or enabled firmware.
Computer system firmware typically provides functionality for loading an operating system. In particular, many firmware implementations first perform hardware and memory initialization. The firmware then loads the operating system by loading the first sector of a disk drive (the master boot record or “MBR”) and transferring program control to it. Program code in the MBR then loads a boot manager, which in turn loads an operating system kernel, boot drivers, and other software components needed to boot the operating system. For some operating systems, the boot manager also loads an initial random access memory (“RAM”) disk that contains software modules that assist in further booting the computer.
Firmware that implements the UEFI Specification includes a UEFI boot loader that can directly load operating systems that support the UEFI Specification. Operating systems that directly support the UEFI Specification can also issue service calls to a platform layer present in the UEFI enabled firmware. Many modern 64-bit operating systems are UEFI-enabled and use this feature of the UEFI enabled firmware.
When a UEFI compliant firmware loads a non-UEFI enabled operating system, however, the boot manager present on disk must be utilized to load the operating system rather than the UEFI boot loader. The disk-based boot manager loads the operating system, drivers, registry, initial RAM disk, and possibly other components using a legacy interrupt 13h (“INT 13h”) service mechanism. As known to those skilled in the art, INT 13h is a legacy firmware service that provides read and write access to mass storage devices.
Performance is a significant issue when using the INT 13h service mechanism. This is due in part to the fact that legacy firmware does not use direct memory access (“DMA”) to implement the INT 13h service, which is typically available from disk controllers to read or write data in a high performance fashion. As a result, this can cause the time required for a UEFI compliant firmware to load a non-compliant operating system to be relatively high.
It is with respect to these and other considerations that the disclosure made herein is presented.